GtkToggleButton: Queue a redraw on enter/leave
authorMatthias Clasen <mclasen@redhat.com>
Tue, 24 Jun 2014 17:03:47 +0000 (13:03 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Tue, 24 Jun 2014 17:03:47 +0000 (13:03 -0400)
Without this, we don't redraw consistently for prelight state changes.

gtk/gtktogglebutton.c

index 96856c26ff9716169b3c917e89053d98e5c8aab4..ef5ece56df588f89833a00494e2763e2f84a761e 100644 (file)
@@ -136,6 +136,7 @@ static void gtk_toggle_button_get_property  (GObject              *object,
                                             GValue               *value,
                                             GParamSpec           *pspec);
 static void gtk_toggle_button_update_state  (GtkButton            *button);
+static void gtk_toggle_button_enter_leave   (GtkButton            *button);
 
 
 static void gtk_toggle_button_activatable_interface_init (GtkActivatableIface  *iface);
@@ -174,8 +175,8 @@ gtk_toggle_button_class_init (GtkToggleButtonClass *class)
   button_class->pressed = gtk_toggle_button_pressed;
   button_class->released = gtk_toggle_button_released;
   button_class->clicked = gtk_toggle_button_clicked;
-  button_class->enter = gtk_toggle_button_update_state;
-  button_class->leave = gtk_toggle_button_update_state;
+  button_class->enter = gtk_toggle_button_enter_leave;
+  button_class->leave = gtk_toggle_button_enter_leave;
 
   class->toggled = NULL;
 
@@ -638,6 +639,13 @@ gtk_toggle_button_clicked (GtkButton *button)
     GTK_BUTTON_CLASS (gtk_toggle_button_parent_class)->clicked (button);
 }
 
+static void
+gtk_toggle_button_enter_leave (GtkButton *button)
+{
+  gtk_toggle_button_update_state (button);
+  gtk_widget_queue_draw (GTK_WIDGET (button));
+}
+
 static void
 gtk_toggle_button_update_state (GtkButton *button)
 {